//
//  StatusViewModel.swift
//  SynWeibo
//
//  Created by 沈艳男 on 15/9/10.
//  Copyright © 2015年 沈艳男. All rights reserved.
//

import UIKit



// 原创微博的可重用cell标识符
let StatusNormalCellID = "StatusNormalCellID"
// 转发微博的可重用cell标识符
let StatusForwardCellID = "StatusForwardCellID"

/// 微博试图模型，提供cell显示的数据
class StatusViewModel: NSObject {

    /// 实例化微博模型数据，作用是获取微博模型内部的数据
    var status: Status
    
    /// 返回当前cell对应的可重用标识符
    var cellID: String {
        // 如果转发的微博不为空就返回转发的微博，否则返回原创微博
        return status.retweeted_status != nil ? StatusForwardCellID : StatusNormalCellID
    }
    /// 被转发的原创微博文字，格式: @作者:原文
    var forwardText: String? {
        let text = status.retweeted_status?.user?.name ?? ""
        let username = status.retweeted_status?.text ?? ""
        return "@\(username):\(text)"
    }
    
    /// 用户头像的URL
    var userIconUrl: NSURL {
        return NSURL(string: (status.user?.profile_image_url ?? "")!)!
    }
    
    /// 认证类型 -1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    /// imageWithNamed 方法能够缓存图像，所以两个计算型属性的效率不会受到影响
    /// 设置计算型属性的时候，需要考虑到性能
    var userVipImage: UIImage? {
        switch (status.user?.verified ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2,3,5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    

    
    var userMemberImage: UIImage? {
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    
    /// 配图缩略图 URL 数组
    var thumbnailURLs: [NSURL]?
    /// 当前模型对应的行高
    var rowHeigth: CGFloat = 0
    
    // MARK: - 构造函数，作用是初始化
    init(status: Status) {
        self.status = status
//        print("计算行高&测试调用次数")
        
        // 将下面的代码进行重构
        // 如果是转发微博，取出retweeted_status 的 pic_urls，否则直接去 pic_urls 
        if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls {
            thumbnailURLs = [NSURL]()
            for ditc in urls {
                thumbnailURLs?.append(NSURL(string: ditc["thumbnail_pic"]!)!)
            }
        }
        
//        // 给缩略图设置数值
//        // 1、判断是否有图像，如果有图像就初始化声明的配图数组“thumbnailURLs”，在进行便利，插入URL
//        if status.pic_urls != nil {
//            // 初始化图像数组
//            thumbnailURLs = [NSURL]()
//            // 便利数组，插入URL
//            for dict in status.pic_urls! {
//                // 将URL字符串插入到数组中
//                thumbnailURLs?.append(NSURL(string: dict["thumbnail_pic"]!)!)
//            }
////            print("-------\(thumbnailURLs)")
//        }
//        
//        if status.retweeted_status != nil {
//            thumbnailURLs = [NSURL]()
//            // 插入 URL
//            for dict in status.retweeted_status!.pic_urls! {
//                thumbnailURLs?.append(NSURL(string: dict["thumbnail_pic"]!)!)
//            }
//        }
        
        super.init()
    }
    
    /// 打印字典
    override var description: String {
        return status.description + "缩略图URL数组\(thumbnailURLs)"
    }
}
